package com.uam.core.entity.uitls;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * @author lishf
 */
public class DateUtil {

	/**
	 * 将时间戳对象按照给定格式转换成字符串时间
	 * 
	 * @param dbtime
	 *            时间戳对象
	 * @param format
	 *            转换成字符串时间的格式
	 * @return 按照给定格式转换后的字符串时间
	 */
	public static String dbtime2Str(Timestamp dbtime, String format) {
		return new SimpleDateFormat(format).format(new Date(dbtime.getTime()));
	}

	/**
	 * 将时间戳对象按照默认格式（yyyy-MM-dd HH:mm:ss）转换成字符串时间
	 * 
	 * @param dbtime
	 *            时间戳对象
	 * @return 按照默认格式（yyyy-MM-dd HH:mm:ss）转换后的字符串时间
	 */
	public static String dbtime2Str(Timestamp dbtime) {
		return DateUtil.dbtime2Str(dbtime, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 将日期对象按照给定格式转换成字符串日期
	 * 
	 * @param date
	 *            日期对象
	 * @param format
	 *            转换成字符串日期的格式
	 * @return 按照给定格式转换后的字符串日期
	 */
	public static String date2Str(Date date, String format) {
		return new SimpleDateFormat(format).format(date);
	}

	/**
	 * 将日期对象按照默认格式（yyyy-MM-dd）转换成字符串日期
	 * 
	 * @param date
	 *            日期对象
	 * @return 按照默认格式（yyyy-MM-dd）转换后的字符串日期
	 */
	public static String date2Str(Date date) {
		return DateUtil.date2Str(date, "yyyy-MM-dd");
	}

	/**
	 * 将字符串时间按照给定格式转换成时间戳对象
	 * 
	 * @param strtime
	 *            字符串时间
	 * @param format
	 *            转换成时间戳对象的格式
	 * @return 按照给定格式转换后的时间戳对象
	 */
	public static Timestamp str2Dbtime(String strtime, String format)
			throws ParseException {
		return new Timestamp(new SimpleDateFormat(format).parse(strtime)
				.getTime());
	}

	/**
	 * 将字符串时间按照默认格式（yyyy-MM-dd HH:mm:ss）转换成时间戳对象
	 * 
	 * @param strtime
	 *            字符串时间
	 * @return 按照默认格式（yyyy-MM-dd HH:mm:ss）转换后的时间戳对象
	 */
	public static Timestamp str2Dbtime(String strtime) throws ParseException {
		StringBuilder strTime = new StringBuilder(strtime.trim());
		int firI = strTime.indexOf(":");
		int lasI = strTime.lastIndexOf(":");
		if (strTime.indexOf(" ") < 0) {
			strTime.append(" 00:00:00");
		} else if (firI < 0) {
			strTime.append(":00:00");
		} else if (firI == lasI) {
			if (strTime.charAt(strTime.length() - 1) == ':') {
				strTime.append("00:00");
			} else {
				strTime.append(":00");
			}
		}
		return DateUtil.str2Dbtime(strTime.toString(), "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 将字符串日期按照给定格式转换成日期对象
	 * 
	 * @param strdate
	 *            字符串日期
	 * @param format
	 *            转换成日期对象的格式
	 * @return 按照给定格式转换后的日期对象
	 */
	public static Date str2Date(String strdate, String format)
			throws ParseException {
		return new SimpleDateFormat(format).parse(strdate);
	}

	/**
	 * 将字符串日期按照默认格式（yyyy-MM-dd HH:mm:ss）转换成日期对象
	 * 
	 * @param strdate
	 *            字符串日期
	 * @return 按照默认格式（yyyy-MM-dd HH:mm:ss）转换后的日期对象
	 */
	public static Date str2Date(String strdate) throws ParseException {
		return DateUtil.str2Date(strdate, "yyyy-MM-dd HH:mm:ss");
	}

}
